<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Envoy: C++ L7 proxy and communication bus</title>
    <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic|Source+Code+Pro">
    <link href="stylesheets/site-00db0e0a.css" rel="stylesheet" />
    <link rel="shortcut icon" type="image/png" href="/favicon.ico"/>
    <link rel="shortcut icon" type="image/png" href="https://lyft.github.io/envoy/favicon.ico"/>
  </head>
  <body>
    <header class="hero" role="banner">
  <nav class="global-nav" role="navigation">
  <section class="wrap-container">
    <header class="global-nav-item logo-text">
      <a href="./" class="global-nav-logo">Envoy</a>
    </header>

    <ul class="global-nav-list">
      <li class="global-nav-item">
        <a href="//twitter.com/share" class="twitter-share-button" data-text="Envoy, a C++ front/service proxy" data-via="lyft" data-count="none">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>

      </li>
      <li class="global-nav-item">
        <iframe src="//ghbtns.com/github-btn.html?user=lyft&repo=envoy&type=watch" height="30" width="70" frameborder="0" scrolling="0" style="width:70px; height: 30px;" class="github-btn" allowTransparency="true"></iframe>

      </li>
      <li class="global-nav-item">
        <a href="./docs/index.html" class="cta-link-nav-filled">Docs</a>
      </li>
    </ul>
  </section>
</nav>

  <section class="body-content-container wrap-container" data-waypoint="hero-content">
    <h2 class="hero-headline">C++ L7 proxy and communication bus</h2>
    <h3 class="hero-description">Envoy is an open source edge and service proxy, from the developers at Lyft</h3>
    <div class="hero-banner-container">
      <div class="envoy-logo">
      </div>
    </div>
  </section>
</header>

<div class="body-content-container wrap-container" role="main">
  <div class="landing-cta">
  <section class="wrap-container">
    <a href="./docs/index.html" class="landing-cta-button-fill">View Docs</a>
    <a href="http://github.com/lyft/envoy" class="landing-cta-button-outline">Github</a>
  </section>
</div>

  <section class="introduction">
    <div class="introduction-container" data-waypoint="introduction-container">
      <div class="introduction-item second-graphic">
        <div class="introduction-item-graphic-wrapper">
          <div class="intro-graphic-one"></div>
        </div>
        <div class="introduction-item-text-wrapper">
          <h4 class="introduction-item-header">
            Out of process architecture
          </h4>
          <p class="introduction-item-text">
            Envoy is a self contained server. It runs alongside any application language or framework. At Lyft we currently use it to proxy for PHP, Python, Go, Java, and C++.

          </p>
        </div>
      </div>

      <div class="introduction-item third-graphic">
        <div class="introduction-item-text-wrapper">
          <h4 class="introduction-item-header">
            HTTP/2
          </h4>
          <p class="introduction-item-text">
            Envoy has first class support for HTTP/2 for both incoming and outgoing connections. It is a transparent HTTP/1.1 to HTTP/2 proxy.

          </p>
        </div>
        <div class="introduction-item-graphic-wrapper">
          <div class="intro-graphic-two"></div>
        </div>
     </div>

      <div class="introduction-item fourth-graphic">
        <div class="introduction-item-graphic-wrapper">
          <div class="intro-graphic-three"></div>
        </div>
        <div class="introduction-item-text-wrapper">
          <h4 class="introduction-item-header">
            Advanced load balancing
          </h4>
          <p class="introduction-item-text">
            Envoy supports advanced load balancing features including automatic retries, circuit breaking, global rate limiting, request shadowing, zone local load balancing, etc.

          </p>
        </div>
      </div>
    </div>
    <p><b>Pluggable filter architecture:</b> Envoy allows filtering both at the network level
       (TCP/IP) as well as at the HTTP level. Filters can be chained together to perform complex
       tasks. New filters can be written to perform tasks not already supported.</p>
    <p><b>Modern C++11 code base:</b> Envoy is written in C++11, yielding both great performance and
       productivity.</p>
    <p><b>HTTP L7 routing:</b> Envoy supports advanced HTTP L7 routing primitives including
       redirection, virtual hosts, virtual clusters, matching on different request parameters, etc.
       </p>
    <p><b>TLS:</b> Envoy supports both TLS termination and initiation, client certificate
        verification, and certificate pinning.</p>
    <p><b>gRPC:</b>  Envoy has first class support for Google's gRPC framework.</p>
    <p><b>MongoDB:</b> Envoy contains a full MongoDB wire format parser that is used to gather
       statistics about database connections.</p>
    <p><b>DynamoDB:</b> Envoy contains a full DynamoDB API parser that is used to gather
       statistics about database requests and responses.</p>
    <p><b>Service discovery:</b> Envoy supports multiple methods for service discovery including
        asynchronous DNS resolution as well as integration with an external service discovery
        service.</p>
    <p><b>Health checking:</b> Envoy is capable of active health checking of backend servers.
        Active health checking along with service discovery yields eventually consistent and
        extremely resilient load balancing.</p>
    <p><b>Best in class observability:</b> Envoy exposes a multitude of statistics to aid in system
        visibility and debugging as well as distributed tracing via thirdparty providers.</p>
  </section>
</div>

<div class="landing-cta">
  <section class="wrap-container">
    <a href="./docs/index.html" class="landing-cta-button-fill">View Docs</a>
    <a href="http://github.com/lyft/envoy" class="landing-cta-button-outline">Github</a>
  </section>
</div>

    <footer class="footer" data-waypoint="footer" role="contentinfo">
  <div class="wrap-container">
    <div class="footer-column">
      <article class="footer-site-information">
        <p>
          &copy; 2016 Lyft, Inc
        </p>
      </article>
      <article class="footer-contact">
        <ul class="footer-contact-list">
          <li class="footer-contact-list-item twitter-link">
            <a href="//twitter.com/share" class="twitter-share-button" data-text="Envoy, a C++ front/service proxy" data-via="lyft" data-count="none">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>

          </li>
          <li class="footer-contact-list-item github-link">
            <iframe src="//ghbtns.com/github-btn.html?user=lyft&repo=envoy&type=watch" height="30" width="70" frameborder="0" scrolling="0" style="width:70px; height: 30px;" class="github-btn" allowTransparency="true"></iframe>

          </li>
          <li class="footer-contact-list-item">
            <a href="http://www.lyft.com/app">Download the Lyft app</a>
          </li>
        </ul>
      </article>
    </div>
    <div class="footer-column footer-right">
      <p class="footer-credit">
        From the developers at
      </p>
      <a href="http://lyft.com" target="_blank">
        <span class="footer-logo"></span>
      </a>
    </div>
  </div>
</footer>

    <script src="javascripts/site-080dbf72.js"></script>
    <script>
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1446928-11']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script');
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    ga.setAttribute('async', 'true');
    document.documentElement.firstChild.appendChild(ga);
  })();
</script>

  </body>
</html>
